package com.dyw.Day24;

/**
 * @author Devil
 * @create 2022-02-09-23:16
 *
 * 汉明距离
 *
 * 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
 *
 * 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
 *
 * 标签: 位运算
 *
 * 思路:通过与运算 通过两个数字同时忘左移动 与相同数字(这里是1)进行与运算的的结果 比较 如果不同就是这两个数字对应二进制位不同的位置的数目。
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        System.out.println(new Demo01().hammingDistance(1, 4));
    }
    public int hammingDistance(int x, int y) {
        int count = 0;
        int i=0;
        while((x>>>i)!=0||(y>>>i)!=0){
            if(((x>>>i)&1)!=((y>>>i)&1)){
                count++;
            }
            i++;
        }
        return count;
    }
}
